#include "test.h"
#include "public.h"
#include "gpio.h"
#include "../UART/uart.h"
#include "../VIC/vic_reg.h"

void print_cpsr(){
    unsigned int cpsr;

    __asm__(
            "mrs r0, cpsr\n"
            "mov %0, r0\n"
            :"=r"(cpsr)
            );

    printf("cpsr: %x\r\n", cpsr);
}

void print_val(char *str, unsigned int p){
    printf("%s %x\r\n", str, *(unsigned int *)p); 
}

void print_PERIPHBASE(){
    u32 periphbase;

    __asm__(
        "MRC p15, 4, %0, c15, c0, 0\n"
        :"=r"(periphbase)
    );
    printf("PERIPHBASE:%x\r\n", periphbase);
    printf("GICD_IIDR:%x\r\n", GICD_IIDR);
    printf("GICD_TYPER:%x\r\n", GICD_TYPER);

}

void find(){
    u32 *start = (u32 *)0x00000000;
    // u32 *end = (u32 *)0xFFFFFFFC;
    u32 count = 0;
    
    // while(start != end){
    //     if(*flag || count == 0x1000000){
    //         printf("\r%08x", (u32)start);
    //         *flag = 0;
    //         count = 0;
    //     }
        
    //     if(*start == 0x49524550){
    //         if(*(start + 1) == 0x41424850){
    //             printf("[%x] %x\r\n", (u32)start, *start);
    //         }
    //     }
    //     start += 1;
    //     count++;
    // }

    for(; count < 5120; count++){
        printf("%08x ", *(start + count));
        if(count % 8 == 7){
            my_putc('\r');
            my_putc('\n');
        }
    }
}

void raise(){}